課程資訊
課程名稱
平行與分散式程式設計
Parallel and Distributed Programming 
開課學期
102-2 
授課對象
電機資訊學院  資訊網路與多媒體研究所  
授課教師
洪士灝 
課號
CSIE7210 
課程識別碼
922 U3970 
班次
 
學分
全/半年
半年 
必/選修
選修 
上課時間
星期二3,4(10:20~12:10)星期四3,4(10:20~12:10) 
上課地點
資104資104 
備註
限學士班四年級以上
總人數上限:50人 
Ceiba 課程網頁
http://ceiba.ntu.edu.tw/1022PDP 
課程簡介影片
 
核心能力關聯
核心能力與課程規劃關聯圖
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

『平行與分散式程式設計』為運用多處理機系統與雲端運算平台所必備的知識與技能,本課程教授平行程式設計與分散式雲端運算相關技術,包括常見的平行與分散式程式設計語言,如MPI, OpenMP, CUDA, OpenCL, MapReduce等,使學生能應用多處理機系統與雲端運算平台。本課程為大學部高年級與研究所選修課程,除了課程講授之外,也要求學生自行研讀教材,進行實驗,尋找研究題材,以及完成期末專題。 

課程目標
本課程的目標在於讓修課同學:
- 學習平行化程式及演算法
- 使用平行程式語言開發程式
- 在雲端計算平台實作平行化程式,以瞭解雲端計算相關之效能要素
- 培養尋找研究題材與進行研究之專業能力 
課程要求
本課程為大學部高年級與研究所選修課程,除了課程講授之外,也要求學生自行研讀教材,進行實驗,以及設計期末專題。學生需具備下列課程基礎:
- 計算機結構
- 程式設計
- 作業系統 
預期每週課後學習時數
 
Office Hours
每週四 14:00~17:00 
指定閱讀
 
參考書目
1. Heterogeneous Computing with OpenCL, by Benedict R. Gaster, Lee Howes, David
R. Kaeli, Perhaad Mistry & Dana Schaa, 2011
2. CUDA by Example: An Introduction to General-Purpose GPU Programming, by Jason
Sanders & Edward Kandrot, 2010
3. Data-Intensive Text Processing with MapReduce, by Jimmy Lin & Chris Dyer, 2010
4. Advanced Computer Architecture and Parallel Processing, by Hesham El-Rewini
and Mostafa Abo-El-Barr, 2005  
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
Final Project 
30% 
 
2. 
Midterm Exam 
30% 
 
3. 
Exercises 
30% 
 
4. 
Participation 
10% 
 
 
課程進度
週次
日期
單元主題
第1週
02/18  Introduction 
第1週
02/20  Introduction (Continued) 
第2週
02/25  Program Analysis 
第2週
02/27  Program Analysis 
第3週
03/04  Program Analysis 
第3週
03/06  Shared Memory and OpenMP 
第4週
03/11  Shared Memory Programming and OpenMP 
第4週
03/13  Shared Memory Programming with Threads 
第5週
03/18  Shared Memory Programming with Threads 
第5週
03/20  MPI Programming 
第6週
03/25  MPI Programming 
第6週
03/27  MPI Programming 
第7週
04/01  MPI Programming 
第7週
04/03  溫書假 
第8週
04/08  Performance Analysis 
第8週
04/10  Performance Analysis 
第9週
04/15  Performance Analysis 
第9週
04/17  Performance Analysis,
Introduction to Hadoop (Big Data University,
http://bigdatauniversity.com/courses/) 
第10週
04/22  TA Time 
第10週
04/24  Midterm Exam 
第11週
04/29  Introduction to Hadoop 
第11週
05/01  Introduction to MapReduce 
第12週
05/08  期末專題報告 
第12週
05/06  MapReduce Execution Framework 
第13週
05/13  期末專題報告 
第13週
05/15  MapReduce 
第14週
05/20  Introduction to Heterogeneous Computing 
第14週
05/22  Introduction to OpenCL 
第15週
05/27  Introduction to OpenCL 
第15週
05/29  Big Data 
第16週
06/05  Internet of Things 
第16週
06/03  Big Data 
第17週
06/10  Project Discussions